/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package PaquetesDePrueba;

import Interfaces.ICtrlUsuarios;
import DataTypes.DataEvento;
import DataTypes.DataUsuario;
import Hndlr.HndlrUsuario;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import Controladores.*;

/**
 *
 * @author Sebas
 */
public class CtrlUsuariosTest {
    
    public CtrlUsuariosTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }

    /**
     * Test of altaUsuario method, of class CtrlUsuarios.
     */
    @Test
    public void testAltaUsuario() throws Exception {
        System.out.println("altaUsuario");
        DataUsuario du = new DataUsuario();
        du.setCorreo("correoUsr");
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.altaUsuario(du);
        
        HndlrUsuario hUsr = HndlrUsuario.getInstance();
        
        assertEquals(1, hUsr.listarDUsuarios().size()) ;
    }

    /**
     * Test of bloquearUsuario method, of class CtrlUsuarios.
     */
    @Test
    public void testBloquearUsuario() throws Exception {
        System.out.println("bloquearUsuario");
        DataUsuario du = null;
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.bloquearUsuario(du);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of listaUsuarios method, of class CtrlUsuarios.
     */
    @Test
    public void testListaUsuarios() {
        System.out.println("listaUsuarios");
        
        HndlrUsuario hUsr = HndlrUsuario.getInstance();
        ICtrlUsuarios instance = new CtrlUsuarios();
        
        int cantUsuariosExp = hUsr.listaUsuarios().size();
        int cantUsuarios = instance.listaUsuarios().size();
        
        assertEquals(cantUsuariosExp, cantUsuarios);
    }

    /**
     * Test of ModificarUsuario method, of class CtrlUsuarios.
     */
    @Test
    public void testModificarUsuario() {
        System.out.println("ModificarUsuario");
        HndlrUsuario hUsu = HndlrUsuario.getInstance();
        DataUsuario du = hUsu.getUsuario("correoUsr");
        
        du.setNombre("nuevoNombre");
        du.setCiudad("nuevaCiudad");
        du.setPais("nuevoPais");
        
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.ModificarUsuario(du, "correoUsr");
        
        DataUsuario usuario = hUsu.getUsuario("correoUsr");
        
        assertEquals(usuario.getNombre(), "nuevoNombre");
        assertEquals(usuario.getCiudad(), "nuevaCiudad");
        assertEquals(usuario.getPais(), "nuevoPais");
        
    }

    /**
     * Test of AgregarAmigo method, of class CtrlUsuarios.
     */
    @Test
    public void testAgregarAmigo() throws Exception {
        System.out.println("AgregarAmigo");
        
        DataUsuario du = new DataUsuario();
        du.setCorreo("correoAmigo");
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.altaUsuario(du);
        
        String claveUsu = "correoUsr";
        String amigo = "correoAmigo";
        instance.AgregarAmigo(claveUsu, amigo, Calendar.getInstance());
        
        HndlrUsuario hUsu = HndlrUsuario.getInstance();
        assertTrue(hUsu.obtenerUsuario("correoUsr").esAmigo("correoAmigo"));
        assertTrue(hUsu.obtenerUsuario("correoAmigo").esAmigo("correoUsr"));
    }

    /**
     * Test of listarDAmigos method, of class CtrlUsuarios.
     */
    @Test
    public void testListarDAmigos() throws IOException {
        System.out.println("listarDAmigos");
        
        CtrlUsuarios instance = new CtrlUsuarios();
        
        String ClaveUsu = "";
        ArrayList expResult = null;
        ArrayList result = instance.listarDAmigos(ClaveUsu);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of quitarAmigo method, of class CtrlUsuarios.
     */
    @Test
    public void testQuitarAmigo() throws Exception {
        System.out.println("quitarAmigo");
        String claveUsu = "";
        String amigo = "";
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.quitarAmigo(claveUsu, amigo);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of esCreadorGrupo method, of class CtrlUsuarios.
     */
    @Test
    public void testEsCreadorGrupo() {
        System.out.println("esCreadorGrupo");
        String correo = "";
        CtrlUsuarios instance = new CtrlUsuarios();
        boolean expResult = false;
        boolean result = instance.esCreadorGrupo(correo);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of agregarEvento method, of class CtrlUsuarios.
     */
    @Test
    public void testAgregarEvento() {
        System.out.println("agregarEvento");
        DataEvento even = null;
        String usu = "";
        CtrlUsuarios instance = new CtrlUsuarios();
        instance.agregarEvento(even, usu);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of listarCalendarioEventos method, of class CtrlUsuarios.
     */
    @Test
    public void testListarCalendarioEventos() {
        System.out.println("listarCalendarioEventos");
        String nomGrup = "";
        CtrlUsuarios instance = new CtrlUsuarios();
        HashMap expResult = null;
        HashMap result = instance.listarCalendarioEventos(nomGrup);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
}
